GRUB4DOS(十) 关于grldr.mbr和grldr 您所在的位置:网站首页 Grldr菜单 LST菜单文件 GRUB4DOS(十) 关于grldr.mbr和grldr

GRUB4DOS(十) 关于grldr.mbr和grldr

2024-07-14 01:08| 来源: 网络整理| 查看: 265

grldr.mbr和任何系统都没有关系,它只负责寻找根目录下的grldr并将控制权交予它,然后grldr通过LST文件加载引导菜单,当LST文件不存在时则进入命令行由客户使用命令引导系统。

****************************************************************************** ***   grldr.mbr - 怎样将grldr.mbr写到硬盘的主引导磁道               *** ******************************************************************************   grldr.mbr包含能够用作主引导记录的代码。此代码负责搜索所有分区的grldr,并且在发现   它后装载它。现在被支持的分区种类是:FAT12/FAT16/FAT32,NTFS,EXT2/EXT3。在扩展分区   上的逻辑分区也被支持,条件是此扩展分区与微软兼容。实际上,搜索机制没有充分地测试   分区类型(0x85 )的Linux 的扩展分区。

怎样将 GRLDR.MBR 写到硬盘的主引导磁道?

  首先,读入 Windows 磁盘签名及分区信息字节(总共72字节,从主引导记录的偏移   0x01b8到0x01ff处),并且放置到GRLDR.MBR的开始扇区的相同范围的偏移0x01b8   到0x01ff处。

  如果硬盘上的主引导记录是由微软的FDISK产生的单一的扇区主引导记录,   可以选择把它复制到GRLDR.MBR的第二扇区。

  GRLDR.MBR的第二扇区叫作“原先的主引导记录”。当找不到GRLDR后,将从“原先的主引   导记录”开始引导。

  不需要其它的步骤,当所有的上述的必要的改变已经完成后,现在只要将GRLDR.MBR写到   主引导磁道。这就全部完成了。

注意:主引导磁道表示的是硬盘的第一条磁道。

注意:GRLDR.MBR 的自举代码只在分区的根目录寻找GRLDR。你最好把menu.lst文件和GRLDR 放置在一起。(就是说放在和 GRLDR 相同分区的相同根目录下。)

“grldr” 文件名在ext2分区中必须是小写字母,而且grldr的文件种类必须是纯普通文件。 其它种类,例如,符号链接文件也是不行的。

  更新: bootlace.com 是一个在 DOS/LINUX 下的能把 grldr.mbr 安装到主引导记录   的工具。整个grldr.mbr被嵌入到bootlace.com工具内部,因此 bootlace.com可以独   立使用。参见后面。

以下内容供开发人员参考..... ****************************************************************************** ***               grldr.mbr - Details about the control bytes              *** ******************************************************************************                   grldr.mbr - 其控制字节的详述

Six bytes can be used to control the boot process of GRLDR.MBR. 有六个字节可以控制GRLDR.MBR引导过程。

Offset    Length    Description 偏移量  长度    说明

======    ======    ============================================================== 02h    1    bit0=1: disable the search for GRLDR on floppy         bit0=0: enable the search for GRLDR on floppy                   第 0 位=1 :允许搜索软盘上的GRLDR 。                   第 0 位=0 :禁止搜索软盘上的GRLDR 。

        bit1=1: disable the boot of PREVIOUS MBR with invalid             partition table(usually an OS boot sector)         bit1=0: enable the boot of PREVIOUS MBR with invalid             partition table(usually an OS boot sector)                   第 1 位=1 :禁止引导分区表无效的原主引导记录                             (通常是一个操作系统的引导扇区)                   第 1 位=0 :允许引导分区表无效的原主引导记录                             (通常是一个操作系统的引导扇区)

        bit2=1: disable the feature of unconditional entrance to             the command-line(See below `--duce')         bit2=0: enable the feature of unconditional entrance to             the command-line(See below `--duce')                   第 2 位 = 1 :禁止无条件进入命令行 (见下面的`--duce')                   第 2 位 = 0 :允许无条件进入命令行(见下面的`--duce')

        bit3=1: disable geometry tune(See below `--chs-no-tune')         bit3=0: enable geometry tune(See below `--chs-no-tune')                   第 3 位= 1 :禁止改变磁盘几何参数(见下面的 `--chs-no-tune')                   第 3 位= 0 :允许改变磁盘几何参数(见下面的 `--chs-no-tune')

        bit4 - bit6: reserved                   第 4 位到第 6 位:被保留

        bit7=1: try to boot PREVIOUS MBR after the search for GRLDR         bit7=0: try to boot PREVIOUS MBR before the search for GRLDR                   第 7 位=1:在搜索 GRLDR 之后尝试引导原先的主引导记录           第 7 位=0:在搜索 GRLDR 之前尝试引导原先的主引导记录

03h    1    timeout in seconds to wait for a key press. 0xff stands for         waiting all the time(endless).                 等待键被按下时的暂停秒数。0xff代表始终暂停(即无休止的)。

04h    2    hot-key code. high byte is scan code, low byte is ASCII code.         the default value is 0x3920, which stands for the space bar.         if this key is pressed, GRUB will be started prior to the boot         of previous MBR. See "int 16 keyboard scan codes" below.                 热键代码。高字节是扫描码,低字节是ASCII码。默认值是0x3920,代                 表的是空格键。如果此键被按下,GRUB将在引导原先的主引导记录之前         启动。见“ int16 键盘扫描码”。

06h    1    preferred boot drive number, 0xff for no-drive                 优先引导的驱动器号,0xff 代表没有。

07h    1    preferred partition number, 0xff for whole drive                 优先引导的分区号,0xff 代表整个驱动器。

        if the preferred boot drive number is 0xff, the order of the         search for GRLDR will be:                 如果优先引导的驱动器号是0xff,搜索 GRLDR 的顺序是:

            (hd0,0), (hd0,1), ..., (hd0,L),(L=max partition number)              (hd1,0), (hd1,1), ..., (hd1,M),(M=max partition number)             ... ... ... ... ... ... ... ...              (hdX,0), (hdX,1), ..., (hdX,N),(N=max partition number)                                (X=max harddrive number)             (fd0)

        otherwise, if the preferred boot drive number is Y(not equal to         0xff) and the preferred partition number is K, then the order of         the search for GRLDR will be:                 否则,如果优先引导的驱动器号假定为Y (且不等于0xff),而优先引导                 的分区号为K,那么搜索 GRLDR 的顺序是:

            (Y) if K=0xff; or (Y,K) otherwise             (hd0,0), (hd0,1), ..., (hd0,L),(L=max partition number)              (hd1,0), (hd1,1), ..., (hd1,M),(M=max partition number)             ... ... ... ... ... ... ... ...              (hdX,0), (hdX,1), ..., (hdX,N),(N=max partition number)                                (X=max harddrive number)             (fd0)                        Note: if Y < 0x80, then (Y) is floppy, else (Y) is harddrive,               and (Y,K) is partition number K on harddrive (Y).                 注意:如果Y小于0x80 ,那么这个(Y)驱动器代表软驱,否则就是硬盘驱动器。                       而(Y,K)代表Y号硬盘驱动器上的 k 号分区。

 

 

****************************************************************************** ***        List of binary files and their corresponding source files       *** ******************************************************************************            二进制文件及对应的源代码文件列表

binary file        main source file    other included source or binary files 二进制文件      源代码主文件            包含的其他源代码或二进制文件 -------------        ----------------          -------------------------------------

bootlace.com    bootlacestart.S        bootlace.inc, grldrstart.S

grldr                  grldrstart.S               pre_stage2(binary, See note below)

grldr.mbr           mbrstart.S                grldrstart.S

grub.exe           dosstart.S                pre_stage2(binary, See note below)

hmload.com     hmloadstart.S

----------------------------------------------------------------------------- 注意:pre_stage2 是GNU GRUB的主体程序,它以二进制格式被简单的添加到grldrstart       及dosstart部分,形成我们的grldr和grub.exe 。

注意:GRUB (无.exe后缀)在Linux下是一个静态链接的 ELF 格式的可执行文件,它 可以被GRUB Shell正常调用。GRUB Shell 是一个启动管理软件,但并不是一个引导装 载器(boot 命令在GRUB Shell里不能执行)。GRUB.EXE (通过KEXEC)能作为一个引 导装载器直接在 Linux 下使用。

 

****************************************************************************** ***                     GRUB4DOS and Windows Vista                         *** ******************************************************************************                         GRUB4DOS 与 Windows Vista

首先,使用以下命令来建立一个启动项:

    bcdedit /create /d "GRUB for DOS" /application bootsector

执行结果看起来类似这样: The entry {05d33150-3fde-11dc-a457-00021cf82fb0} was successfully created.

其中长字串{05d33150-3fde-11dc-a457-00021cf82fb0} 是这个项的数字标识{id}。

然后,通过以下命令来设置启动参数:     bcdedit /set {id} device boot     bcdedit /set {id} path \grldr.mbr     bcdedit /displayorder {id} /addlast 请用先前的命令所返回的实际的id 来替换掉 {id}。

最后,复制 GRLDR.MBR 到 你引导分区的根目录下,并且将 GRLDR 和 menu.lst 复制到 任意一个 FAT16/FAT32/EXT2/NTFS 的分区根目录下。

注意:引导分区必须是含有 BOOTMGR 的激活的主分区。

注意:  你只需要指定BCD的位置就可以修改另一个操作系统的BCD 启动项:     bcdedit /store D:\boot\BCD ...

注意: 执行这些命令需要提高权限,它们必须是“以管理员身份运行”于cmd.exe中。

注意:已有人报告说,即使使用管理员身份,Vista的某些版本也不支持在C盘根目录下建立 无扩展名的文件。你既可以复制grldr到另外的一个分区来解决这个问题,也可以将 grldr  重命名,比如为 grub.bin 。如何改名,请参见下节。

 

****************************************************************************** ***                      How to rename grldr                               *** ******************************************************************************                          怎样重命名 grldr

  grldr 和 grldr.mbr引用引导文件内部的文件名来决定装载哪个文件,所以假如你   想更换它们的名字,那么你也必须要修改那些内嵌在文件内部的设置。你可以使用   辅助程序grubinst 来做到这些,grubinst 可以在以下网址下载到:

http://download.gna.org/grubutil/

  grubinst 能生成自定义的grldr.mbr:

    grubinst -o -b=mygrldr C:\mygrldr.mbr

  grubinst 也能编辑一个既有的 grldr 或 grldr.mbr:

    grubinst -e -b=mygrldr C:\mygrldr

    grubinst -e -b=mygrldr C:\mygrldr.mbr

在这种情况中,你必须使用一个和 grub4dos 版本兼容的grubinst,否则修改将会失败。

  所以,在命令中通过加载mygrldr来代替grldr ,你可以使用下面的方法之一:

1.使用已定制好的grldr.mbr 来加载 mygrldr 。在这种情况下,你需要修改内嵌在   grldr.mbr中的引导文件名。grldr.mbr的名字可以被任意的改变。

2.直接使用mygrldr 。在这种情况下,你需要将 mygrldr 中内嵌的引导文件名改为   一个合适的名字。

注意: 引导文件名必须遵循 8.3 文件名规范。  



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有